C语言fopen打开文件失败了,原来是这个原因~~~~ 您所在的位置:网站首页 fopen 相对路径 C语言fopen打开文件失败了,原来是这个原因~~~~

C语言fopen打开文件失败了,原来是这个原因~~~~

2023-08-12 08:50| 来源: 网络整理| 查看: 265

大家好,我是疯狂的比特,一个每天在互联网上种菜和砍柴的程序员 今天给大家分享一个C语言初学者常见的一个问题。

问题

经常有人问我,我的C语言代码好好的,怎么就打开文件失败了呢? 我们先来看看代码吧

#include #include int main() { FILE* pfRead = fopen("test.txt", "r"); if (pfRead == NULL) { printf("打开文件test.txt失败啦\n"); exit(1); } //读写文件 //to do //关闭文件 fclose(pfRead); pfRead = NULL; return 0; }

因为这里fopen打开文件的方式是"r",所以我们要保证文件存在! 那这里我们首先创建一个test.txt这样名字的文件在工程的目录下。 比如: 在这里插入图片描述 然后我们运行程序 请看结果: 在这里插入图片描述

这是为什么呢? 明明文件存在,代码也没问题! 明明文件存在,代码也没问题! 明明文件存在,代码也没问题! 怎么结果就是错了呢? 一定是今天写代码没看黄历… 在这里插入图片描述

好了,这是突然想起来,C语言还有一个报告错误信息的函数perror哦~

void perror ( const char * str );

参考文档 这个函数可以在库函数发生错误的情况下,报告当前库函数使用发生错误的原因。

这里既然我们发现fopen函数打开文件失败了,就可以在fopen函数后报告一下错误的原因是什么,接下来改代码如下:

#include #include int main() { FILE* pfRead = fopen("test.txt", "r"); if (pfRead == NULL) { //改变:这里并没有直接打印,而是换成了perror函数报告错误 perror("打开文件test.txt失败啦"); exit(1); } //读写文件 //to do //关闭文件 fclose(pfRead); pfRead = NULL; return 0; }

请看结果: 在这里插入图片描述 程序给出的结果,让我们清醒认识到其实代码错误和黄历是没有关系的,这里和能力有关系。

当看到:"No such file or directory"这句话错误提示的时候,我们才开始怀疑,难道是真的文件不存在????难道是真的文件不存在????难道是真的文件不存在????

到这里你可能还是一筹莫展,不知如何下手? 那我就接下来揭晓答案!!!!

这个时候,我们看看创建文件的地方: 在这里插入图片描述 那如何显示文件的后缀呢? 如果你是win10系统,请看这里: 在这里插入图片描述

当我们显示文件扩展名的时候,刚刚我们创建的test.txt这个文件的名字为什么是test.txt.txt了呢?

原来是因为,当我们创建文本文件的时候,电脑自定会给文件带一个后缀是.txt,又因为我们的电脑装好系统后,默认是不显示文件的扩展名的,所以你没看到隐藏的.txt文件,这样就导致了以上的情况。

你以为你创建了一个test.txt的文件,实质上你创建了一个test.txt.txt的文件!

那我们看到这里,把文件名的后缀放展示出来,然后再把文件的名字改正确,那我们的程序就可以正常打开文件,并且读写咯。

知识点 fopen以读的形式打开文件,文件必须存在,代码中打开的文件名和实际文件名必须要匹配perror函数是一个错误报告函数,可以适当的使用我们在使用电脑的时候,最好把文件的扩展名暴露出来,这样就不容易出问题代码出问题是不小心写了错误的代码,不是黄历的问题,要学会解决问题和调试代码的能力,才能成长为优秀的程序员。

全文完

创作不易 如果你觉得文章帮助到了你 欢迎点赞,收藏,评论,文明三连,鼓励作者 我创建了一个粉丝群:1092687209,有什么问题,欢迎交流哦



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有